#include <iostream>
#include <vector>



int main()
{
    std::vector<int> v;
    //插入
    v.push_back(1);//尾插法 O(1)
    v.push_back(2);
    v.push_back(2);
    v.push_back(3);


    // for(int i = 0;i < v.size();i++)
    // {
    //     std::cout<<v[i]<<" ";// O(1)
    // }
    // std::cout<<std::endl;

    // std::vector<int>::iterator ite_b = v.begin();//头部迭代器：指向容器的第一个元素
    // std::vector<int>::iterator ite_e = v.end();//尾部迭代器：指向元素的最后一个元素的下一个位置

    //自动类型推导
    //auto a = 10;
    // auto ite = v.begin();
    // std::cout<<*(ite+1)<<std::endl; //随机迭代器:重载了+-的迭代器

    //中间插入
    v.insert(v.begin() + 1,99);//迭代器位置，元素

    //迭代器失效:当指向的的容器元素删除后，该迭代器不能继续使用
    //删除
    v.erase(v.begin() + 1);
    
    for(auto ite = v.begin();ite != v.end();) //适用所有容器
    {
        if(*ite == 2)
            ite = v.erase(ite);
        else
            ite++;
    }
    v.pop_back();//尾删

    for(auto ite = v.begin();ite != v.end();ite++)
    {
        std::cout<<*ite<<" ";
    }
    std::cout<<std::endl;


    // std::cout<<v.size()<<std::endl;
    // std::cout<<v.capacity()<<std::endl;
    return 0;
}